/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prjtgl.controler.administrateur;

import prjtgl.controler.membre.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Session;
import org.zkoss.bind.BindUtils;
import org.zkoss.bind.annotation.AfterCompose;
import org.zkoss.bind.annotation.ContextParam;
import org.zkoss.bind.annotation.ContextType;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Sessions;

import org.zkoss.zk.ui.select.SelectorComposer;
import org.zkoss.zk.ui.select.Selectors;
import org.zkoss.zk.ui.select.annotation.Listen;
import org.zkoss.zk.ui.select.annotation.Wire;
import org.zkoss.zul.*;
import prjtgl.metier.Application;
import prjtgl.metier.comptes.Membre;
import prjtgl.metier.comptes.profil_utilisateur.poste.Experience;
import prjtgl.util.Email;
import prjtgl.util.SessionUtilisateur;

/**
 *
 * @author Adrien
 */
public class ProfilMembre extends SelectorComposer {

	@Wire
	Div title;
	@Wire
	Div currentExperience;
	@Wire
	Div contenu;
	
	@Wire
	private Div domainesExpertise;
	
	@Wire
	private Div profilActuel;
	
	
	private InboxData sesExperiences = new InboxData();
	
	

	public ProfilMembre() {
		// Recuperation de l'utilisateur connecté
                Application ap =Application.getInstance();
                if(sesExperiences.membre==null){
                    sesExperiences.membre = (Membre)(ap.rechercherMembre((String)Sessions.getCurrent().getAttribute("contact")));
                    Sessions.getCurrent().removeAttribute("contact");
                }
		
	}
	
	@AfterCompose
	public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {
		Selectors.wireComponents(view, this, false);
		afficherProfil();
	}

	public void afficherProfil() {
		
		// Nom prenom
		title.appendChild(new Html("<h1>" + sesExperiences.membre.getNom().toUpperCase() + " " + sesExperiences.membre.getPrenom() + "</h1>"));
		
		// @TODO Domaines d'expertise
		domainesExpertise.appendChild(new Label("dsd, "));
		domainesExpertise.appendChild(new Label("dsd"));
		
		// Profil actuel du membre
		profilActuel.appendChild(new Label(sesExperiences.membre.getProfil().getIntitule()));
	}

		@Listen("onClick=#suppresion")
        public void supprimerMembre(){
            Application.getInstance().supprimerUtilisateur(sesExperiences.membre.getEmail());
            Map<String, Object> args = new HashMap();
           args.put("content", "Admin/RechercheMembre.zul");
            BindUtils.postGlobalCommand(null, null, "changePage", args);
        }
        
        @Listen("onClick=#envoyerMessage")
        public void envoyerMessage(){
           Email.envoyer(sesExperiences.membre.getEmail(),"CONTACTER PAR ADMIN", "VOUS AVEZ RECU UN AVERTISSEMENT ");
            
        }
	
	public InboxData getSesExperiences() {
		return sesExperiences;
	}

	public class InboxData {
                public Membre membre;
		private List<Experience> mExperience;

		public InboxData() {
			initData();
		}

		private void initData() {
                        if(membre==null){
                            membre = (Membre)(Application.getInstance().rechercherMembre((String)Sessions.getCurrent().getAttribute("contact")));
                            Sessions.getCurrent().removeAttribute("contact");
                        }
                    
			mExperience = membre.getExperiences();
			if(mExperience == null){
				mExperience = new ArrayList<Experience>();
			}
		}

		public List<Experience> getSesExperiences() {
			return mExperience;
		}
	}
        
        
        
}
